//
//  OAuthViewController.swift
//  SynWeibo
//
//  Created by 沈艳男 on 15/9/3.
//  Copyright © 2015年 沈艳男. All rights reserved.
//

import UIKit
import SVProgressHUD
class OAuthViewController: UIViewController,UIWebViewDelegate {
    
    private let webView = UIWebView()
    
    override func loadView() {
//        view.backgroundColor = UIColor.whiteColor()
        view = webView
        webView.delegate = self
        title = "新浪微博"
        // 往导航控制栏上添加按钮
        navigationItem.leftBarButtonItem = UIBarButtonItem(title: "关闭", style: UIBarButtonItemStyle.Plain, target: self, action: "close")
        navigationItem.rightBarButtonItem = UIBarButtonItem(title: "自动填充", style: UIBarButtonItemStyle.Plain, target: self, action: "autoFile")
    }
    
    // 自动填充按钮的点击事件
    // document.getElementById('userId').value = 'synwyyx@163.com'
    // document.getElementById('passwd').value = '19880602'
    @objc private func autoFile() {
        let js = "document.getElementById('userId').value = 'synwyyx@163.com';" + "document.getElementById('passwd').value = '19880602';"
        webView.stringByEvaluatingJavaScriptFromString(js)
    }
    
    // 关闭按钮的点击事件
    @objc private func close() {
        // 回到访客界面
        dismissViewControllerAnimated(true) { () -> Void in
            print("回到访客界面")
        }
        // 关闭指示器
        SVProgressHUD.dismiss()
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        // 加载授权界面
        webView.loadRequest(NSURLRequest(URL: NetworlkTools.sharedTools.authURL))
    }
    
    // MARK - UIWebViewDelegate
    // 加载请求就会调用
    func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool{
        
        // 取出回调地址
        let urlString = request.URL!.absoluteString
        print("-------\(urlString)")
        // 1、判断request.URL是否是回调地址的前部分，如果不是回调地址就继续加载
        if !urlString.hasPrefix(NetworlkTools.sharedTools.redirectUri) {
            // 继续加载
            return true
        }

        // 2、判断如果是回调地址，检查 query 这点字符串，是否含有"code="后面的字符串
        // query就是 URL中“？”后面的所有内容
        if let query = request.URL!.query where query.hasPrefix("code="){
            // 3、取出code后面的字符串
            let code = query.substringFromIndex("code=".endIndex)
            print("请求码\(code)")
            
            // 4、调用网路方法，获取token
//            NetworlkTools.sharedTools.loadAccessToken(code).subscribeNext({ (result) -> Void in
//                print(result)
//                
//                // 创建用户账户模型 as! 将一个对象视为类型
//                let account = UserAccount(dict: result as! [String: AnyObject])
//                print("我看看这是什么\(account)")
//                
//                self.loadUserInfo(account)
//                
//                }, error: { (error) -> Void in
//                    print(error)
//            })
            
            UserAccountViewModel.sharedUserAccount.loadUserAccount(code).subscribeError({ (error) -> Void in
                printLog(error)
                }, completed: { () -> Void in
                    printLog("登录完成")
                    print("登录完成")
                
                    // 关闭控制器
                    SVProgressHUD.dismiss()
                    // 重点：该代码主要作用是动画完成之后在执行通知切换控制器，这样才能保证控制器完全被销毁
                    self.dismissViewControllerAnimated(false, completion: { () -> Void in
                        // 发送通知
                        NSNotificationCenter.defaultCenter().postNotificationName(HMSwitchRootViewControllerNotification, object: "Main")
                    })
                   
            })
            
            
        } else {
            print("取消")
        }

        return false
    }
    

    func webViewDidStartLoad(webView: UIWebView) {
        SVProgressHUD.show()
    }
    func webViewDidFinishLoad(webView: UIWebView) {
        SVProgressHUD.dismiss()
    }

}
